1. Field of the Invention
The present invention relates in general to data management within computer storage subsystems and in particular to an improved method and system for selecting a non-busy device address when performing non-specific read requests.
2. Description of the Related Art
Data processing systems frequently include large scale storage devices, such as Direct Access Storage Devices (DASD) which are located externally to a host computer system and sometimes at significant distances from the host computer system. A storage controller is often installed between host processors and the DASD devices themselves. The storage controller acts not only as a path director for data flowing between the host computer and the DASDs but also as a performance enhancer for the data processing system as a whole. This second activity is accomplished through the use of cached memory within the storage controller.
The IBM 3990 Model 3, and Model 6 are examples of a storage controller having a cache function. This storage controller can attach to 370, 370-XA, ESA/370 and ESCON channels which are all well known in the art. When the storage controller is operating with 370 channels, it provides path-independent device allocation. When, on the other hand, the storage controller is operating with 370-XA, ESA/370 channels, it provides both path-independent device allocation and dynamic path reconnection.
Communication between the host computer and the storage controller is typically accomplished over data channels which are well known in the art. An example of such a data channel is the IBM Corporation's ESCON channel architecture. The data channels allow communication between the host computer and the storage controller using a set of commands which direct the controller to process specific data at specific locations. For example, in the IBM System/360 and System/370 host environments, the central processing unit (CPU) issues a series of commands identified in 360/370 architecture as Channel Command Words (CCWs) which control the operation of the associated DASD through the storage controller.
A common architecture used within storage subsystems is known as "Count-Key-Data" (CKD). With this architecture, records written on a track within a DASD unit are provided with a count field (size), an optional key field (identification) and a data field (record). A record on DASD may occupy one or more units of real storage. A dataset (also known as a data item) is a logical collection of multiple records which may be stored on contiguous units of real storage or which may be dispersed. Data is then stored and/or retrieved from a DASD using write and read requests which are issued by the host system.
Another channel program protocol, known as Extended Count Key Data (ECKD) was introduced to facilitate subsystem operation in an asynchronous manner. ECKD additionally provides an extended command set from that of CKD. ECKD includes all of the CKD commands, and enhanced versions of specific commands. Existent ECKD data retrieval protocols assume a host process data read request includes data descriptors. Data descriptors identify the location of a requested data record on DASD as well as the specific DASD (a device address which may also be referred to as a Utility Volume). Situations exist, however, wherein data is retrievable without data descriptors, for example, when retrieving data that is not associated with a particular device, for example, for data resident in cache or stored for concurrent or remote copy.
A data transfer operation is initiated by the host computer generating a START I/O instruction which is passed to the channel and causes control to be relinquished to a chain of CCWs. The CCW chain is then sent over the channel to the storage controller so that control operations can be effected and the proper storage device can be selected to activate data transfer.
Each CCW is separately resident in the CPU main store and must be fetched by the channel program, decoded and transferred to the storage controller. The CCW specifies the command to be executed and the storage area, if any, to be used.
The mechanism which enables host systems to retrieve data which has previously been stored on a disk is the "data disk address". Therefore, when issuing a read request, the host system specifies where on the DASD storage subsystem the data has been placed. Later, if the host system wishes to retrieve this data it will issue a read request utilizing the same address.
Data stored on a disk within a storage subsystem is always associated with a unique data descriptor which identifies that data. In a read request the host specifies the data descriptor of the data it wishes to receive. In response to such a request the DASD subsystem will send the referenced data back to the host. For purposes of the explanation herein, such read requests which utilize data descriptors are referred to as "specific read requests".
Over the past few years, cache, or high density electronic memory has been introduced into DASD storage subsystems. Access time between the cache and the channel is much faster than that between DASD and the channel. There are various physical device movements and other operations associated with DASD which limit data transmission speed. One such limitation is the time required for the magnetic disk to rotate until it is aligned with the transducer contained in the read head. Another is the limited bandwidth associated with the magnetic transducers used to read and write data.
These limitations are not present with a cache access. Through the use of various caching algorithms, frequently used data is maintained in cache storage rather than being read directly from DASD and, as a result, can be supplied to the channel at the speed associated with electronic storage rather than that of magnetic storage.
For read operations data can be transferred between the cache and channel at channel speeds which can often be as high as 18 MB per second, for example, depending upon the host processor, cache and channel configurations. In addition, it is also possible to accept and process write operations originating from the channel at greatly improved speeds through the use of cache.
In the ECKD architecture, the host refers to data stored on disk devices by data address. The data address is composed of a unique device address and the location of the data on the device. When a host issues a data request, read or write, it must select a device address first. This selection serves two different purposes. First, it is the mechanism by which the host informs the storage controller of the device portion of the data address. Secondly, it reserves the device for the request, blocking the execution of other requests against this device. This is done to prohibit attempts of multiple concurrent accesses to the physical disk device since the mechanics of the disk do not allow concurrent accesses to the media. Third, once a chain is issued, nothing should interfere with the chain, that is, the chain is an atomic operation.
The host processor maintains a Unit Control Block (UCB) lock for every DASD. When an I/O access is requested, the host first locks the host UCB entry associated with the device and then issues the request to the storage controller. During the period that the I/O request is being serviced, the UCB entry remains locked. If another request is made for data on the same device the request will be rejected or queued until the host UCB entry is freed.
The storage controller similarly maintains a UCB lock for every device. The storage controller UCB ensures serialization between multiple hosts, in the case where multiple hosts are connected to the storage controller. This storage controller UCB prevents multiple accesses to the same DASD by more than one host processor. When a device is selected in connection with a host data request, its UCB is reserved. Any other request attempting to select this device is rejected until the original request ends.
It is important to realize that in addition to allowing faster access to data, cache memory provides another key feature. As opposed to DASD units, cache permits multiple concurrent access to its data. In the absence of the invention described herein and as a result of the prior art data selection process, two data requests are still prohibited from concurrent execution if they refer to data on the same device even when the relevant data image is in the cache. This is because specific read requests, as described above, specify a disk address regardless of whether the data is in cache since the host is unaware of the true location of the requested data. Furthermore, two data requests specifying the same disk address are prevented from executing concurrently due to the limitations of the DASD devices.
When cache is present in a storage subsystem it is necessary to have two locks in addition to those described above. The first is a physical device lock. There is one such lock per DASD device and it is held when an access to the physical device is in progress. The lock may be held due to a host data request or a storage controller internal resource management operation. This lock, instead of the UCB lock in a non-cache environment, arbitrates attempts to gain multiple concurrent access to a particular physical device.
A second lock, termed a data lock, is also necessary in a cached subsystem. There is one such lock per "data item" contained within the cache memory and the lock is reserved when accessing the "data item" in the cache. Although the size of a "data item" can vary, for exemplary purposes it is noted that in the IBM 3990 Model 3, a "data item" corresponds to one track of data. Since cache, as described above, allows for multiple concurrent accesses to data, these locks are necessary to prevent multiple concurrent accesses to a specific item of data in the cache.
Those skilled in the art will appreciate that, in addition to providing cache access, it would be advantageous to permit a host system to retrieve data from a DASD subsystem on a basis other than a data descriptor. For example, in cases where the host system requests a large amount of data occupying many disk tracks the efficiency of transferring that data to the host might be enhanced if the order of data access and transfer is modified in order to minimize both seek time and latency time within the data storage subsystem.
This is generally not possible since host systems do not know the head location within the DASD subsystem and thus are not able to issue specific read requests which would minimize the disk seek and latency time. A method for permitting this type of data transfer using "non-specific reads" is described in a copending commonly-assigned U.S. Pat. No. 5,408,656 filed on Sep. 23, 1992 and titled "Method and System for Non-Specific Data Retrieval in a Data Processing System".
Non-Specific Data retrieval, as described in the above referenced patent application, is a method for increasing the efficiency of data retrieval from multiple DASDs by permitting the host system to retrieve data utilizing a non-specific read request. In other words, data may be requested by the host by specifying a non-address attribute. For example, in a case where large amounts of data need to be transferred and the order of transfer is not important, the storage subsystem can retrieve data which is physically closest to the head within the DASD device.
This is accomplished by specifying boundary addresses between which all data present is to be retrieved by the storage controller and transmitted to the host system. Thus, all data records between the boundary addresses are retrieved without specifying exact address data for each desired dataset. In addition to boundary addresses, data may be retrieved "non-specifically" by specifying as the non-address attribute those datasets which have been updated subsequent to a specified event.
Even with the advent of cache memory within storage controllers and the methodology of non-specific reads, storage controller throughput can be less than desirable. Currently, many disk device I/O protocols are implemented such that the number of I/O requests that may occur concurrently is limited by the number of physical devices that exist in a computer storage subsystem. This is because the majority of protocols, including IBM ECKD, associate each I/O operation with a device address. Furthermore, most storage controllers, including the IBM Model 3990, will only accept I/O operations directed toward a physical device to which it is attached and then only one operation per physical device at a time.
Given the above storage controller implementation limitations, the maximum number of concurrent I/O requests (which is equal to the number of physical DASDs) can not be overcome. In a typical data processing environment, however, all of the devices in the storage subsystem are rarely, if ever, accessed at the same time. Often specific DASD units are much more busy than other DASD units within the same storage subsystem. In fact, there are many devices that remain continuously idle and are used only as back up units in the event that another device fails.
Storage controller throughput is improved by using non-specific read requests, that is, the host computer specifies addresses of non-busy spare devices for accessing data stored on other busy devices to allow for concurrent data transfers between the host processor and a group of DASD devices through the storage controller. This is more fully described in copending, commonly-assigned U.S. Pat. No. 5,493,724, filed on Apr. 1, 1993 and titled "Utility Volume For Non-Specific Reads". While non-specific reads can enhance storage system throughput, the inventors of the present invention have discovered that if certain device addresses are used extensively as utility volumes, then queuing still occurs, thus not only reducing performance gains but possibly reducing even the base performance. Hence, good utility volume selection must take into account load dynamics in the data processing system. Heretobefore, a method for dynamic utility volume selection for improving non-busy device selection has not been known.
Thus, what is needed is dynamic selection mechanism for selecting a non-busy utility volume when servicing a non-specific read request, by considering load balancing dynamics.